package main

import (
	"fmt"
	"time"
	"runtime"
)
//goroutine 是由 Go 运行时环境管理的轻量级线程。
func say(s string) {
	for i := 0; i < 5; i++ {
		time.Sleep(100 * time.Millisecond)
		fmt.Println(s)
	}
}
//runtime.Goexit()函数用于终止当前goroutime,但defer函数将会被继续调用
func test() {
	defer func() {
		fmt.Println("in defer!")
	}()
	for i := 0; i < 10; i++ {
		fmt.Println(i)
		if i > 5 {
			runtime.Goexit()
		}
	}
}

func main() {
	//go say("world")
	//say("hello")
	fmt.Println("cup核数", runtime.NumCPU())//cpu核数
	fmt.Println("线程数", runtime.NumGoroutine())//当前线程数
	//runtime.GOMAXPROCS(5)//设置并发线程数
	go test()
	fmt.Println("线程数", runtime.NumGoroutine())//当前线程数
	var str string
	fmt.Scan(&str)
}
